home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / gnustuff / minix / includ~1.z / includ~1 / ansi.h next >
Encoding:
C/C++ Source or Header  |  1989-12-04  |  1.7 KB  |  59 lines

  1. /* The <ansi.h> header checks whether the compiler claims conformance to ANSI
  2.  * Standard C. If so, the symbol _ANSI is defined as 1, otherwise it is 
  3.  * defined as 0.  Based on the result, a macro
  4.  *
  5.  *    _PROTOTYPE(function, params)
  6.  *
  7.  * is defined.  This macro expands in different ways, generating either
  8.  * ANSI Standard C prototypes or old-style K&R (Kernighan & Ritchie) 
  9.  * prototypes, as needed.  Finally, some programs use _CONST, _VOIDSTAR etc
  10.  * in such a way that they are portable over both ANSI and K&R compilers.
  11.  * The appropriate macros are defined here.
  12.  */
  13.  
  14. #ifndef _ANSI_H
  15. #define _ANSI_H
  16.  
  17. /* ANSI C requires __STDC__ to be defined as 1 for an ANSI C compiler.
  18.  * Some half-ANSI compilers define it as 0.  Get around this here.
  19.  */
  20.  
  21. #define _ANSI              0    /* 0 if compiler is not ANSI C, 1 if it is */
  22.  
  23. #ifdef __STDC__            /* __STDC__ defined for (near) ANSI compilers*/
  24. #if __STDC__ == 1        /* __STDC__ == 1 for conformant compilers */
  25. #undef _ANSI            /* get rid of above definition */
  26. #define _ANSI              1    /* _ANSI = 1 for ANSI C compilers */
  27. #endif
  28. #endif
  29.  
  30. /* At this point, _ANSI has been set correctly to 0 or 1. Define the
  31.  * _PROTOTYPE macro to either expand both of its arguments (ANSI prototypes),
  32.  * only the function name (K&R prototypes).
  33.  */
  34.  
  35. #if _ANSI
  36. #ifdef __NO_PROTO__            /* dont want protos */
  37. #define    _PROTOTYPE(function, params)    extern function()
  38. #else
  39. #define    _PROTOTYPE(function, params)    function params
  40. #endif
  41. #define    _VOIDSTAR    void *
  42. #define    _VOID        void
  43. #define    _CONST        const
  44. #define    _VOLATILE    volatile
  45. #define _SIZET        size_t
  46.  
  47. #else
  48.  
  49. #define    _PROTOTYPE(function, params)    extern function()
  50. #define    _VOIDSTAR    void *
  51. #define    _VOID        void
  52. #define    _CONST
  53. #define    _VOLATILE
  54. #define _SIZET        unsigned int
  55.  
  56. #endif /* _ANSI */
  57.  
  58. #endif /* ANSI_H */
  59.